Computer input/output (I/O) interfaces connected to a data bus typically have to follow specific transaction ordering rules. For example, a computer I/O hub that is connected to a Peripheral Component Interface (PCI) bus must preserve the order of write transactions from I/O controllers sent through the PCI bus. Examples of I/O devices are disk drives, video cards, audio cards, scanners, digital cameras, network adapters, and docking ports for handheld devices. The I/O hub typically implements an I/O interface using modified first-in-first-out (FIFO) queues to store transactions from the I/O devices in an order that obey PCI ordering rules. Such FIFO queues are low-cost, easy to implement, and produce few errors.
When an I/O controller initiates an ordered sequence of transactions, the I/O hub stores the transactions in the modified FIFO queues and typically executes them in the order received. An example of an ordered sequence of transactions is a sequence of write transactions initiated by a hard drive controller that writes data to a main memory. The write transactions that come at a later time cannot be executed until the earlier transactions are completed. If one write transaction is stalled, all of the remaining write transactions will be stalled.